package com.cskaoyan.javse.object._6clone;

/**
 * @description: 空接口的意义
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * Cloneable接口是一个空接口,让类去实现一个空接口,有什么意义?
 * 实现空接口虽然没有得到任何成员,但仍然改变了这个类的数据类型
 * --> 让这个类从原先不是这个接口的实现类,变成了实现类
 * --> 一旦成为接口的实现类,就可以用instanceof关键字进行类型的判断
 * --> 这样就可以完成一系列的操作了
 * Cloneable就是这样的一个工作原理
 *
 * clone方法虽然是一个本地方法,但是底层实际上就是用instanceof做的判断
 *
 *
 */
public class Demo2 {
    public static void main(String[] args) {
        judgeInstanceImplEmptyInter(new A());
    }

    //用于判断传入的对象是否是接口的子类对象
    public static void judgeInstanceImplEmptyInter(Object o){
        if (o instanceof EmptyInterface){
            System.out.println("实现了空接口,可以做一些操作");
        }else {
            System.out.println("没有实现空接口,抛出异常");
        }

    }
}
interface EmptyInterface{

}
class A implements EmptyInterface{

}